import request from "@/utils/request";
import { VisitTrendQuery, VisitTrendVO, VisitStatsVO } from "../system/log.api";
const ACCESSLOGS_BASE_URL = "/api/v1/access-logs";

const AccessLogsAPI = {
  /** 获取出入日志分页数据 */
  getPage(queryParams?: AccessLogsPageQuery) {
    return request<any, PageResult<AccessLogsPageVO[]>>({
      url: `${ACCESSLOGS_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 获取出入日志表单数据
   *
   * @param id 出入日志ID
   * @returns 出入日志表单数据
   */
  getFormData(id: number) {
    return request<any, AccessLogsForm>({
      url: `${ACCESSLOGS_BASE_URL}/${id}/form`,
      method: "get",
    });
  },

  /**
   *  添加出入日志
   *
   *  @param data 出入日志表单数据
   */
  add(data: AccessLogsForm) {
    return request({
      url: `${ACCESSLOGS_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 更新出入日志
   *
   * @param id 出入日志ID
   * @param data 出入日志表单数据
   */
  update(id: number, data: AccessLogsForm) {
    return request({
      url: `${ACCESSLOGS_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 批量删除出入日志，多个以英文逗号(,)分割
   *
   * @param ids 出入日志ID字符串，多个以英文逗号(,)分割
   */
  deleteByIds(ids: string) {
    return request({
      url: `${ACCESSLOGS_BASE_URL}/${ids}`,
      method: "delete",
    });
  },

  /**
   * 获取当前在健身房的人数
   * @returns 当前在健身房的人数
   */
  getPeopleInGym() {
    return request<any, number>({
      url: `${ACCESSLOGS_BASE_URL}/getPeopleInGym`,
      method: "get",
    });
  },

  /**
   * 获取访问趋势
   *
   * @param queryParams
   * @returns
   */
  getVisitTrend(queryParams: VisitTrendQuery) {
    return request<any, VisitTrendVO>({
      url: `${ACCESSLOGS_BASE_URL}/visitTrend`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 获取访问统计
   *
   * @param queryParams
   * @returns
   */
  getVisitStats() {
    return request<any, VisitStatsVO>({
      url: `${ACCESSLOGS_BASE_URL}/visit-stats`,
      method: "get",
    });
  },
};

export default AccessLogsAPI;

/** 出入日志分页查询参数 */
export interface AccessLogsPageQuery extends PageQuery {
  /** 会员ID（如果是会员） */
  memberId?: number;
  /** 员工ID（如果是员工） */
  staffId?: number;
  /** 访问类型：1-进入 2-离开 */
  accessType?: number;
  /** 访问时间 */
  accessTime?: [string, string];
}

/** 出入日志表单对象 */
export interface AccessLogsForm {}

/** 出入日志分页对象 */
export interface AccessLogsPageVO {
  /** 会员ID（如果是会员） */
  memberId?: number;
  /** 员工ID（如果是员工） */
  staffId?: number;
  /** 访问类型：1-进入 2-离开 */
  accessType?: number;
  /** 访问时间 */
  accessTime?: Date;
}
